<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   Editor: COS论坛精华帖系列——use R for fun系列之小游戏开发篇  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript">
   MathJax.Hub.Config({
          tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]},
          TeX: {equationNumbers: {autoNumber: "AMS"}}
        });
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://cos.name/2013/08/cos-series-use-r-for-fun-game/",
                  host: "http://cos.name",
                  prePath: "http://cos.name",
                  scheme: "http",
                  pathBase: "http://cos.name/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466440577: Accept with keywords: (title(0.142857142857):服务平台,精华帖,论坛,统计学,小游戏,门户网站,中国, topn(0.233333333333):界面,统计图,信息,R语言,旗子,游戏,示例,主站,素材,小游戏,可视化,文章,参数,函数,精华帖,编程,按键,键盘,编辑部,独题,鼠标,作图,代码,箭头,绘图,例子,交互式,论坛,帮助文件,识别).-->
 </head>
 <body class="single single-post postid-8129 single-format-standard sidebar" onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    Editor: COS论坛精华帖系列——use R for fun系列之小游戏开发篇
   </h1>
  </div>
  <div class="container" id="xmain">
   <div class="hfeed site" id="page">
    <header class="site-header" id="masthead" role="banner">
     <div id="cos-logo">
      <a href="http://cos.name/">
       <img src="http://cos.name/wp-content/themes/COS-kermesinus/images/headers/cos-logo.png"/>
      </a>
     </div>
     <div class="navbar" id="navbar">
      <nav class="navigation main-navigation" id="site-navigation" role="navigation">
       <h3 class="menu-toggle">
        菜单
       </h3>
       <a class="screen-reader-text skip-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#content" title="跳至内容">
        跳至内容
       </a>
       <div class="menu-%e6%88%91%e7%9a%84%e8%8f%9c%e5%8d%95-container">
        <ul class="nav-menu" id="menu-%e6%88%91%e7%9a%84%e8%8f%9c%e5%8d%95">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-4746" id="menu-item-4746">
          <a href="http://cos.name">
           主页
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-8120" id="menu-item-8120">
          <a href="http://cos.name/cn">
           论坛
          </a>
          <ul class="sub-menu">
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8124" id="menu-item-8124">
            <a href="http://cos.name/cn/wp-login.php?action=register">
             论坛注册
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8125" id="menu-item-8125">
            <a href="http://cos.name/cn/wp-login.php">
             论坛登录
            </a>
           </li>
          </ul>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8110" id="menu-item-8110">
          <a href="http://cos.name/books/">
           图书资料
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8112" id="menu-item-8112">
          <a href="http://cos.name/videos">
           视频教程
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8333" id="menu-item-8333">
          <a href="http://cos.name/salon/">
           统计沙龙
          </a>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8111" id="menu-item-8111">
          <a href="http://cos.name/chinar/">
           R语言会议
          </a>
         </li>
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-8109" id="menu-item-8109">
          <a href="http://cos.name/training/">
           讲座与培训
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8115" id="menu-item-8115">
          <a href="http://cos.name/cn/forum/comprehensive/job/">
           招聘信息
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4780" id="menu-item-4780">
          <a href="http://cos.name/about">
           关于我们
          </a>
          <ul class="sub-menu">
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8113" id="menu-item-8113">
            <a href="http://cos.name/2008/11/how-to-work-with-cos/">
             加入我们
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8119" id="menu-item-8119">
            <a href="http://cos.name/donate/">
             赞助我们
            </a>
           </li>
           <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8114" id="menu-item-8114">
            <a href="http://cos.name/cn/forum/26">
             项目合作
            </a>
           </li>
          </ul>
         </li>
        </ul>
       </div>
       <form action="http://cos.name/" class="search-form" method="get" role="search">
        <label>
         <span class="screen-reader-text">
          搜索：
         </span>
        </label>
       </form>
      </nav>
      <!-- #site-navigation -->
     </div>
     <!-- #navbar -->
    </header>
    <!-- #masthead -->
    <div class="site-main" id="main">
     <div class="content-area" id="primary">
      <div class="site-content" id="content" role="main">
       <article class="post-8129 post type-post status-publish format-standard hentry category-featured category-software tag-fun tag-700 tag-699 tag-698 tag-11" id="post-8129">
        <header class="entry-header">
         <h1 class="entry-title">
          COS论坛精华帖系列——use R for fun系列之小游戏开发篇
         </h1>
         <div class="entry-meta">
          <span class="date">
           <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/" rel="bookmark" title="链向COS论坛精华帖系列——use R for fun系列之小游戏开发篇的固定链接">
            <time class="entry-date" datetime="2013-08-08T18:27:06+00:00">
             2013/08/08
            </time>
           </a>
          </span>
          <span class="categories-links">
           <a href="http://cos.name/category/website/featured/" rel="category tag">
            推荐文章
           </a>
           、
           <a href="http://cos.name/category/software/" rel="category tag">
            软件应用
           </a>
          </span>
          <span class="tags-links">
           <a href="http://cos.name/tag/fun%e5%8c%85/" rel="tag">
            fun包
           </a>
           、
           <a href="http://cos.name/tag/%e4%ba%a4%e4%ba%92/" rel="tag">
            交互
           </a>
           、
           <a href="http://cos.name/tag/%e6%b8%b8%e6%88%8f/" rel="tag">
            游戏
           </a>
           、
           <a href="http://cos.name/tag/%e7%b2%be%e5%8d%8e%e5%b8%96/" rel="tag">
            精华帖
           </a>
           、
           <a href="http://cos.name/tag/%e8%ae%ba%e5%9d%9b/" rel="tag">
            论坛
           </a>
          </span>
          <span class="author vcard">
           <a class="url fn n" href="http://cos.name/author/editor/" rel="author" title="查看所有由COS编辑部发布的文章">
            COS编辑部
           </a>
          </span>
         </div>
         <!-- .entry-meta -->
        </header>
        <!-- .entry-header -->
        <div class="entry-content">
         <p>
          系列以use R for fun为主题，以COS论坛上的精华帖、相关的package以及自己的一些code为素材，结合自身的一些编程体会，从而整合成文。
         </p>
         <p>
          很多人都片面的认为R仅仅是一个自由免费的统计分析软件，加之其没有其他商业软件诸如SAS、SPSS等商业软件友好的界面而并不被很多人所喜爱，但事实上这非常片面，因此本文旨在通过一系列看似不务正业但实则蕴含一定R语言使用技巧的内容纠结部分user对R 的理解，同时也希望本文能勾起更多人对R的兴趣，推动R推动中国statistics的发展。
         </p>
         <p>
          这里将其作为一个系列文章将会持续撰写，已经开工的包括小游戏开发篇、小应用开发篇、图像处理篇、搞怪作图篇、操纵office 篇、动画音乐视频制作篇等，各篇之间既有区别又相辅相成，涉及到的技能包括思维的开阔性(idea是核心)、编程艺术、可视化、矩阵运算、好package 的寻找等多个方面，可以说use R for fun 是user 对R综合应用能力的一个good test。
         </p>
         <p>
          <span id="more-8129">
          </span>
         </p>
         <p>
          <strong>
           *本文素材出处均已在正文注明
          </strong>
         </p>
         <p>
          小游戏开发篇本该在最后压轴，但考虑到它的吸引力，因此把招牌菜放在了第一道，以诱使各位能继续读下去，让提前倒胃口的p值降到最小，故而作为开篇。言归正传，游戏最主要特点在于它需要人机互动或者人人互动，而实现这一点的一个比较直接的途径就是实现对键盘鼠标信息的读取与响应，而这恰恰可以通过R中最最基础的交互式作图系统轻松实现。
         </p>
         <p>
          <strong>
           一、简述交互式作图
          </strong>
         </p>
         <p>
          既然是小游戏，能自娱自乐足矣，因此我们的目标是用最少的资源来效果最大化，故没有这必要大费周折去劳驾rgl、rggobi、iplots这些了，就靠最原始最屌丝的graphics和grDevices包丰衣足食。所谓交互式作图，关键在于交互，而交互的关键又在于获取鼠标键盘的信息(还不至于用手柄吧)，那么首先我们就来总结一下鼠标键盘上究竟有些什么有用的信息呢？键盘先来，键盘比较简单，无非就是不同的按键，而对于不同的按键R的前辈早已为我们安排好了对应的参数值，待我后面一一道来；而鼠标则相对复杂些，对于鼠标本身的响应而言，包括左击、右击、双击、移动四种，此外由于鼠标在显示器上还对应着一个小箭头，故鼠标上还承载着关于这个箭头的位置(坐标)甚至附近的信息，好在这一点R也给我们准备好了。了解这些之后，于是搞起！
         </p>
         <p>
          <strong>
           1.1 键盘信息的获取
          </strong>
         </p>
         <p>
          前面已经提到，对于键盘而言只有动作信息而没有位置信息，故只需考虑动作信息的获取。幸运的是一个function的一部分就可以非常完美的解决这个问题了，就是getGraphicsEvent()，来源于grDevices包，标准包的最大优点就是值得信赖。先来看下它的用法
         </p>
         <pre>getGraphicsEvent(prompt = "Waiting for input",
onMouseDown = NULL, onMouseMove = NULL,
onMouseUp = NULL, onKeybd = NULL,
consolePrompt = prompt)</pre>
         <p>
          在这里最重要的参数非onKeybd莫属，对于它的解释帮助文件中的描述是a function to respond to key presses，也就是它对应的取值是一个函数，是响应键盘操作的函数。需要注意的是，函数的输入参数为key，也就是指定响应的按键，如方向键就分别是”Left”, “Up”, “Right”, “Down”，另外如果是大写字母的话，默认指的是shift+小写字母，所以在programming的时候务必要区分大小写。附上一个简单的例子，请看下面这段代码：
         </p>
         <pre>par(bty="n",xaxt="n", yaxt="n",mar=c(0,0,0,0),cex=4,font=4);
plot(c(0,1),c(0,1),type="n",xlab="",ylab="");
num&lt;-1:99;
random1&lt;-function(key){
if(key=="a"){
rect(0.2,0.2,0.8,0.8,col="white",border=NA);
B&lt;-sample(num,1);
text(0.5,0.5,B,col="blue",cex=4);
}
}
getGraphicsEvent("run",onKeybd=random1);</pre>
         <p>
          运行之后只要按下“a”，作图界面就会跳出一个从1到99中随机抽取的一个数，每按一次就会随机抽取一个，按住不放就会这么一直下去，窃以为勉强可以算是一个简单的抽奖装置了(后面还会对其做些改进)。值得一提的是，关于参数prompt个人感觉并不是很重要，在上述例子中，其作用就是在命令窗口中显示了run(当然作图装口的标题也会对应改变)。
         </p>
         <p>
          <strong>
           1.2 鼠标信息的获取
          </strong>
         </p>
         <p>
          虽然键盘有很多按键，但都可以依葫芦画瓢，实属简单，而对于鼠标来说则相对复杂一些。
         </p>
         <p>
          <strong>
           1.2.1 位置信息
          </strong>
         </p>
         <p>
          关于位置信息则主要依赖于locator函数和identify函数，用起来也是非常好用，先说locator，它的用途是获取点的坐标，先看一下他的usage
         </p>
         <pre>locator(n = 512, type = "n", ...)</pre>
         <p>
          看到这么简洁的usage瞬间觉得神清气爽，意思非常简单，n指的是你取点的上限，缺省为512个点，type指的则是取点过程中描点的方式，取值的范围主要是四种，分别是”n”,”p”,”l”,”o”，这里缺省值是”n”，也就是只取值不画点，而”l”则是把点与点连成线了，”p”就是点，”o”的话你用了就知道了。既然用法这么简单那就先用为快，再次请看代码：
         </p>
         <pre>par(bty="n",xaxt="n", yaxt="n",mar=c(0,0,0,0),cex=5,font=4);
plot(c(0,1),c(0,1),type="n",xlab="",ylab="");
locator(n=5,type="l",lwd=2,col=sample(1:7,1));</pre>
         <p>
          这让我想起来学arcGIS的时候那坑爹的大作业——描地图，把所谓的栅格数据矢量化，泪崩。
         </p>
         <p>
          接下来讲讲identify这个函数，也是一个很神奇的函数，它通过鼠标点击一幅散点图(只要本质上有点就行，折线图什么的问题也是不大的)识别鼠标周围的数据点，并且可以给辨识出的数据添加标签，其实也就是捕捉我们需要的点，这在交互中非常有用，用法：
         </p>
         <pre>identify(x, y = NULL, labels = seq_along(x), pos = FALSE,
n = length(x), plot = TRUE, atpen = FALSE, offset = 0.5,
tolerance = 0.25, ...)</pre>
         <p>
          <code>
          </code>
          前提是要已经存在一幅图，解释一下参数，x和y无需多言，散点图的原始数据，labels为数据的标签，也就是显示在屏幕上的，缺省情况用的就是阿拉伯数字的正整数，n指的是最大识别的点的上限，tolerance是一个识别的标准，越小识别的精度也越高，也就是只有离原始数据充分近的点才会被识别，当plot=T的时候label会显示出来，而atpen和offset则是描述了标记label 的位置。 同样附上一个简单的例子：
         </p>
         <pre>par(bty="n",xaxt="n", yaxt="n",mar=c(0,0,0,0),font=4);
plot(c(0,1),c(0,1),type="n",xlab="",ylab="");
xx&lt;-runif(100);
yy&lt;-runif(100);
identify(xx,yy);</pre>
         <p>
          运行一下之后是不是有一种寻宝的感觉呢？别急后面会有更好玩的。
         </p>
         <p>
          <strong>
           1.2.2 动作信息
          </strong>
         </p>
         <p>
          对于动作信息而言，从某种程度上讲跟前面提到的键盘属于异曲同工，只不过这里所用的参数是onMouseDown, onMouseMove, onMouseUp，参数的意义看名字就能知道了，同样参数对应的是一个函数，这里函数的输入参数变成了三个，分别是button、x、y，button是需要你指定点击鼠标的形式，左击为对应的取值是0，右击为1，x和y指的就是鼠标所在点，也就是那个箭头。关于具体用法的装逼解释请进一步阅读帮助文件，但个人觉得一个example胜过千言万语，因此这里同样通过一个例子来解决所有问题，请看代码：
         </p>
         <pre>par(bty="n",xaxt="n", yaxt="n",mar=c(0,0,0,0),cex=5,font=4);
plot(c(0,1),c(0,1),type="n",xlab="",ylab="");
move&lt;-function(button,x,y){
points(x,y,cex=2,col=sample(1:7));
}
getGraphicsEvent("",onMouseMove=move);</pre>
         <p>
          运行之后就会发现，现在你可以自己涂鸦了。是不是很棒！
         </p>
         <p>
          <strong>
           二、游戏界面制作
          </strong>
         </p>
         <p>
          了解了交互式作图，可以说攻克了最大的技术难关，但是再核心也只是一个环节，对于玩游戏的人而言，他们永远不会去关心你的交互是如何实现的，他们只会关注表面的东西，这就涉及到游戏开发过程中的另一个重要环节——游戏界面的制作。R中主要包含了四套作图系统，分别是基础作图系统、grid、lattice、ggplot，同样对于做个小游戏界面而言，用最原始的基础作图系统就足矣，毕竟咱不是暴雪、EA。
         </p>
         <p>
          <strong>
           2.1 par函数
          </strong>
         </p>
         <p>
          如果足够细心的话那么肯定已经注意到了我之前给的小例子中在最前面总会加上这么一句
         </p>
         <pre>par(bty="n",xaxt="n", yaxt="n",mar=c(0,0,0,0),cex=5,font=4);</pre>
         <p>
          par是一个极其重要的设置图形参数(当然也可以获取)的函数，尤其是对于非常想追求作图效果的user而言(ggplt2脑残粉可暂时忽略这句话)。随便举个例子，总不可能在游戏界面中出现一个坐标系吧，那难免也太丧心病狂了，这也就是bty=”n”的意义之所在了。因此做界面的一个首要条件是要学会设置，也就是会运用par函数(很多设置在plot等绘图函数也能实现)，par函数参数众多，覆盖面很全，想详细了解的仔细阅读帮助文件即可。另外谢大在他未完成的在线著作《现代统计图形》中也有对par函数和plot函数详细解读，还包括介绍哪些参数是只能在par 中设置的，可以说是提取了帮助文件中的精华部分翻译后展现出来，很有学习价值。
         </p>
         <p>
          <strong>
           2.2 低级绘图函数
          </strong>
         </p>
         <p>
          游戏不可避免的需要在现有作图窗口下重复作图，而这件事情像plot之类的是完不成的(再用一个plot就前功尽弃了)，因此只能交给低级绘图函数来做，需要充分利用低级绘图函数的另一个重要原因就是低级绘图函数可以为我们画一些特殊图形提供便利，如多边形，箭头等。这也是为什么我在之前的代码中的第二行都无一例外的加了
         </p>
         <pre>plot(c(0,1),c(0,1),type="n",xlab="",ylab="");</pre>
         <p>
          用plot把作图设备开出来接下来就可以用低级绘图函数为所欲为了。一些常用的低级绘图函数包括了points(点)、lines(曲线)、segments(线段)、rect(矩形)、arrows(箭头)、polygon(多边形)等等，当然也不要忘了用来添加文本的text()等。
         </p>
         <p>
          <strong>
           2.3 色彩搭配
          </strong>
         </p>
         <p>
          关于基础作图系统的中色彩，主要由grDevices包负责，事实上它所提供的调色功能非常强大，而我们只是利用到其中的极小一部分，关于该包，可以参考
          <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/ http://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/00Index.html">
           这里
          </a>
          ，所有内容尽收眼底，当然图省事图方便同样可以参考谢大的《现代统计图形》，着实是本好书，里面专门有一节讲色彩。由于本人审美观非常拙计，因此点到为止，再说下去就是误导了。
         </p>
         <p>
          <strong>
           2.4 写function能事半功倍
          </strong>
         </p>
         <p>
          通过写function可以简化编程过程中的很多麻烦事。举个例子，如果游戏需要多处用绘制旗子，每次重复操作岂不是很麻烦，就算可以复制粘贴，但是一方面影响运行效率，另一方面影响代码可读性，因此在这种情况下，我们通过如下代码编写一个绘制旗子的function，就可以一劳永逸了。
         </p>
         <pre>plot.flag&lt;-function(x,y,...){
polygon(c(x-0.1,x-0.1,x+0.25,x+0.25),
c(y+0.1,y+0.3,y+0.3,y+0.1),
col="red",border="red");
polygon(c(x-0.3,x-0.3,x+0.3,x+0.3),
c(y-0.3,y-0.2,y-0.2,y-0.3),
col="black",border="black");
segments(x-0.1,y+0.3,x-0.1,y-0.2);
}</pre>
         <p>
          比较合适的做法，把有用的函数事先在代码最前面先定义好，function写完后不妨先测试一下，这样会显得有条理而不容易出错，事实上在各个情况都是如此。
         </p>
         <p>
          <strong>
           三、示例-瞻仰COS前辈
          </strong>
         </p>
         <p>
          示例永远都是王道，接下来所介绍的几个示例都出自COS论坛，由统计之都的前辈大牛们所做，现在都已经被收录在fun包中，可以说属于成功的典范。在
          <a href="https://github.com/yihui/fun/tree/master/R">
           该包的github上
          </a>
          都可以找到源代码，当然直接在package中也可以找到。
         </p>
         <p>
          <strong>
           3.1 (围棋)五子棋
          </strong>
         </p>
         <p>
          其在fun包中的函数为gomoku，意为五子棋，唯一的一个tag是用于设置棋盘的大小，默认为19，即棋盘大小为19*19，也是标准围棋棋盘，关于该idea的原帖来自于
          <a href="http://cos.name/cn/topic/104750#post-221212">
           COS论坛
          </a>
          。其实原理也非常简单，利用locator 函数的交互获取坐标信息，然后根据坐标信息寻找到离其最近的一个交叉点，再利用points函数在改点落子，从而实现了在R中下围棋或者五子棋。唯一欠缺的是里面似乎欠缺对胜负的评判，无论是对五子连珠的判断还是围棋中点目，并没有在其中添加相关的命令。有兴趣的读者也可自行去研究源代码(代码并不长)。看起来可有模有样啊！
         </p>
         <p>
          <a href="http://cos.name/wp-content/uploads/2013/08/weiqi.jpeg">
           <img src="http://cos.name/wp-content/uploads/2013/08/weiqi-300x280.jpeg"/>
          </a>
         </p>
         <p>
          <strong>
           3.2 扫雷
          </strong>
         </p>
         <p>
          还记得之前提到的画旗子么，这里就用上了，当然远远不止画旗子这么简单，如果说棋类的胜负可以由双方自行判断的话，那么扫雷这种人际交互的游戏就肯定做不到了，因此代码也比之前的要长很多。在这段代码中采用了getGraphicsEvent函数进行交互，分别针对左击和右击设置不同的相应。效果也非常棒，也是笔者熬夜必备游戏之一。忘了说了，对应的函数是mine_sweeper()，对应的参数分别可以设置大小，雷的个数等，相当调整游戏的难度，论坛原帖在
          <a href="http://cos.name/cn/topic/14477#post-14477">
           这里
          </a>
          。
         </p>
         <p>
          <a href="http://cos.name/wp-content/uploads/2013/08/mine_sweeper.png">
           <img src="http://cos.name/wp-content/uploads/2013/08/mine_sweeper-300x300.png"/>
          </a>
          <strong>
           3.3 关灯游戏
          </strong>
         </p>
         <p>
          <strong>
          </strong>
          关灯游戏貌似在手机上挺流行的，规则也无需多说，非常好玩的一个游戏，同样是我刷夜必备。同样是用到了getGraphicsEvent函数进行交互操作，代码非常简洁，可读性很强，不过可玩性更强。这里也就不再多说了。对应的函数是lights_out()，关于函数的参数width和height用于设置灯的个数，col.off和col.on分别用于表示等熄灭和点亮的颜色。比较有意思的参数是seed, 用来设置随机数种子，也就是能让你每次都处于同一个起点，比较方便作弊。
         </p>
         <p>
          <a href="http://cos.name/wp-content/uploads/2013/08/light.jpg">
           <img src="http://cos.name/wp-content/uploads/2013/08/light-296x300.jpg"/>
          </a>
         </p>
         <p>
          此外fun包中的游戏还有拼图游戏(sliding_puzzle)和汉诺塔(tower_of_hanoi)，论坛原帖的地址：
          <a href="http://cos.name/cn/topic/14516">
           拼图
          </a>
          、
          <a href="http://cos.name/cn/topic/101199#post-201430">
           汉诺塔
          </a>
          。
         </p>
         <p>
          <strong>
           四、示例——如何DIY？
          </strong>
         </p>
         <p>
          <strong>
          </strong>
          下面的示例并没有任何可取之处，效果更是无法上面的这些个示例相比，之所以厚着脸皮放在这里的目的在于说明programming的过程，一个由简到繁不断改进的过程，好文章是改出来的同样好程序也是改出来的，事实证明，通过改进至少可以把很挫编程略微有点挫。
         </p>
         <p>
          <strong>
           4.1 抽奖装置
          </strong>
         </p>
         <p>
          这个示例是对之前解释getGraphicsEvent函数时所给example的改进。当面临选择时，纠结是难免的，比方说谁去拿外卖，选谁做代表，谁能中奖等等。这里我们不妨以那段示例为基础，给界面做一些修缮，这样一个简陋的抽奖装置就完成了。
         </p>
         <pre>par(bty="n",xaxt="n", yaxt="n",mar=c(0,0,0,0),cex=4,font=4);
plot(c(0,1),c(0,1),type="n",xlab="",ylab="");
text(0.4,0.9,"Who's turn?",
col=rainbow(1000)[sample(1:1000,1)],cex=1);
text(0.8,0.1,"made by Chen-ang Liu",
col=rainbow(1000)[sample(1:1000,1)],font=2,cex=0.2);
num&lt;-1:99;
A&lt;-100;
run&lt;-function(key){
if(key=="s"){
rect(0.2,0.2,0.8,0.8,col="white",border=NA);
B&lt;-sample(num,1);
A&lt;-c(A,B)
text(0.5,0.5,B,col=rainbow(1000)[sample(1:1000,1)],cex=4);
}
}
getGraphicsEvent("run",onKeybd=run);</pre>
         <p>
          当然这只是对界面做了更改，还可以在功能上进行改进，简单一点的，可以增加一些文字素材，表明其用途，再进一步，将其与鼠标结合，从而扩大功能(如增加一些按钮等)，考虑到前面已经有这么多成功的案例，这里也就不再多加赘述了。
         </p>
         <p>
          <a href="http://cos.name/wp-content/uploads/2013/08/choujiang.jpeg">
           <img src="http://cos.name/wp-content/uploads/2013/08/choujiang-300x300.jpeg"/>
          </a>
         </p>
         <p>
         </p>
         <p>
          <strong>
           4.2 其他？
          </strong>
         </p>
         <p>
          事实上顺着上面的思路很多小游戏都可以应运而生，读者不妨自己尝试下？
         </p>
         <p>
          <strong>
           五、一条龙之作——sudoku包
          </strong>
         </p>
         <p>
          <strong>
          </strong>
          本想不提这个包的，因为这个包实在是统计之都没啥关系，但本着求是的校训还是在最后简单提一下，因为该包对数独游戏的构建上已经做到了非常完整了，某种程度上讲也是把
          <strong>
           无聊
          </strong>
          推向了极致(我觉得我已经够无聊了)，该包可以在CRAN上下载，包中共有八个函数，功能涵盖了获取数独题(从
          <a href="http://www.sudoku.org.uk">
           http://www.sudoku.org.uk
          </a>
          中)、生成数独题、解数独题(这是最不无聊的部分)、写数独题当然还有玩数独。玩数独用到的函数是playSudoku()，如果不是在windows下的话，还需要安装tkrplot包。直接用默认设置即可，输入命令(加载这种话就不用我多说了吧)
         </p>
         <pre>&gt; playSudoku()
Solving...done!
? -- this help
1-9 -- insert digit
0,' ' -- clear cell
r -- replot the puzzle
q -- quit
h -- hint/help
c -- correct wrong entries (show in red)
u -- undo last entry
s -- show number in cell
a -- show all (solve the puzzle)</pre>
         <pre>Ready!</pre>
         <p>
          玩法是把鼠标拖至空格处，然后输入数字即可，如果受不了了那么可以按照上面的提示寻求相应的帮助。
          <br/>
          <a href="http://cos.name/wp-content/uploads/2013/08/shudu.jpg">
           <img src="http://cos.name/wp-content/uploads/2013/08/shudu-300x296.jpg"/>
          </a>
          <br/>
          关于小游戏就暂时写到这了(可能的话会再来一篇进阶篇)，如果有更好的示例或者idea欢迎和我或者COS的几位前辈联系，并及时更新，当然如果很棒的话目测就果断收录fun包了，下一篇将是小应用开发篇，里面将会给出更多的示例和demo，内容更精彩！
         </p>
         <p>
          <strong>
           关于作者
          </strong>
         </p>
         <ul>
          <li>
           刘辰昂，浙大准大四本科，统计之都主站编辑
          </li>
          <li>
           weibo：
           <a href="http://weibo.com/2011764505/profile?topnav=1&amp;wvr=5">
            求证1加1
           </a>
          </li>
          <li>
           blog:
           <a href="http://chenangliu.info/cn/">
            http://chenangliu.info/cn/
           </a>
          </li>
          <li>
           email: liuchenang@gmail.com
          </li>
         </ul>
         <div class="wumii-hook">
          <br/>
          <br/>
         </div>
        </div>
        <!-- .entry-content -->
        <footer class="entry-meta">
         <div class="author-info">
          <div class="author-avatar">
           <img src="http://sdn.geekzu.org/avatar/2fe058e9e383c85afa949b36e869432f?s=74&amp;d=monsterid&amp;r=g"/>
          </div>
          <!-- .author-avatar -->
          <div class="author-description">
           <h2 class="author-title">
            关于COS编辑部
           </h2>
           <p class="author-bio">
            本账户为COS编辑部公共账户，目前由朱雪宁任主编，王小宁任副主编，编辑有：冯璟烁、吴佳萍、张心雨、施涛、霍志骥、何通、冷静、尤晓斌、肖楠、邱怡轩、高涛、谢益辉等人，主要负责主站文章的规范化编辑以及相关论文、书籍、手册的整理、编纂、出版等工作。
            <a class="author-link" href="http://cos.name/author/editor/" rel="author">
             查看所有由COS编辑部发表的文章
             <span class="meta-nav">
              →
             </span>
            </a>
           </p>
          </div>
          <!-- .author-description -->
         </div>
         <!-- .author-info -->
        </footer>
        <!-- .entry-meta -->
       </article>
       <!-- #post -->
       <nav class="navigation post-navigation" role="navigation">
        <h1 class="screen-reader-text">
         文章导航
        </h1>
        <div class="nav-links">
         <a href="http://cos.name/2013/08/beijing-cos-salon-jul-2013/" rel="prev">
          <span class="meta-nav">
           ←
          </span>
          COS数据分析沙龙第十二期（北京）
         </a>
         <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-application/" rel="next">
          COS论坛精华帖系列——use R for fun系列之小应用制作篇
          <span class="meta-nav">
           →
          </span>
         </a>
        </div>
        <!-- .nav-links -->
       </nav>
       <!-- .navigation -->
       <div class="comments-area" id="comments">
        <h2 class="comments-title">
         《
         <span>
          COS论坛精华帖系列——use R for fun系列之小游戏开发篇
         </span>
         》有16个想法
        </h2>
        <ol class="comment-list">
         <li class="pingback even thread-even depth-1" id="comment-4621">
          <div class="comment-body">
           Pingback：
           <a class="url" href="http://chenangliu.info/cn/use-r-for-fun-application/" rel="external nofollow">
            use R for fun系列之小应用制作篇 | 求证1加1&amp;Statistics
           </a>
          </div>
         </li>
         <!-- #comment-## -->
         <li class="comment byuser comment-author-yihui odd alt thread-odd thread-alt depth-1 parent" id="comment-4622">
          <article class="comment-body" id="div-comment-4622">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://yihui.name" rel="external nofollow">
               谢益辉
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4622">
              <time datetime="2013-08-09T05:54:23+00:00">
               2013/08/09 05:54
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             原来你是求证1加1……
            </p>
            <p>
             折腾这些东西必须是基础图形系统，ggplot2是面向数据可视化的，那条路走深了之后画这些基础图形元素构成的图反而是不方便。
            </p>
            <p>
             文章是good文章，美中不足的one point是有些place有unnecessary的洋文。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4622#respond" onclick='return addComment.moveForm( "div-comment-4622", "4622", "respond", "8129" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-editor bypostauthor even depth-2 parent" id="comment-4626">
            <article class="comment-body" id="div-comment-4626">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/2fe058e9e383c85afa949b36e869432f?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                COS编辑部
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4626">
                <time datetime="2013-08-09T19:24:29+00:00">
                 2013/08/09 19:24
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               “原来”是什么情况？中英文混杂确实不好，抱歉，之前没留意这个问题，下不为例~
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给COS编辑部" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4626#respond" onclick='return addComment.moveForm( "div-comment-4626", "4626", "respond", "8129" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
            <ol class="children">
             <li class="comment byuser comment-author-yihui odd alt depth-3" id="comment-4627">
              <article class="comment-body" id="div-comment-4627">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/1022d8e6ebc94e8f6bca9a86cebe312a?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  <a class="url" href="http://yihui.name" rel="external nofollow">
                   谢益辉
                  </a>
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4627">
                  <time datetime="2013-08-10T04:19:59+00:00">
                   2013/08/10 04:19
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 “原来”的意思就是我之前没能把微博帐号和人名对应起来。
                </p>
                <p>
                 话说文章底部显示的插件里面微博写成微薄了。现在程序猿的语文水平让人有些捉急。
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
            </ol>
            <!-- .children -->
           </li>
           <!-- #comment-## -->
           <li class="comment byuser comment-author-editor bypostauthor even depth-2" id="comment-4629">
            <article class="comment-body" id="div-comment-4629">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/2fe058e9e383c85afa949b36e869432f?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                COS编辑部
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4629">
                <time datetime="2013-08-10T09:15:41+00:00">
                 2013/08/10 09:15
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               还真是。。。。拙计。。。。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给COS编辑部" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4629#respond" onclick='return addComment.moveForm( "div-comment-4629", "4629", "respond", "8129" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
           <li class="comment odd alt depth-2 parent" id="comment-4632">
            <article class="comment-body" id="div-comment-4632">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/2aab1cbecbe1dce1f66ef31db4c656c1?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://blog.cos.name/taoshi/" rel="external nofollow">
                 Tao Shi
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4632">
                <time datetime="2013-08-11T10:29:59+00:00">
                 2013/08/11 10:29
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               “文章是good文章，美中不足的one point是有些place有unnecessary的洋文。”这句让人看着也捉急。益辉这是要举一个中英混杂的范例吧。
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给Tao Shi" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4632#respond" onclick='return addComment.moveForm( "div-comment-4632", "4632", "respond", "8129" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
            <ol class="children">
             <li class="comment byuser comment-author-editor bypostauthor even depth-3" id="comment-4633">
              <article class="comment-body" id="div-comment-4633">
               <footer class="comment-meta">
                <div class="comment-author vcard">
                 <img src="http://sdn.geekzu.org/avatar/2fe058e9e383c85afa949b36e869432f?s=74&amp;d=monsterid&amp;r=g"/>
                 <b class="fn">
                  COS编辑部
                 </b>
                 <span class="says">
                  说道：
                 </span>
                </div>
                <!-- .comment-author -->
                <div class="comment-metadata">
                 <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4633">
                  <time datetime="2013-08-11T11:17:34+00:00">
                   2013/08/11 11:17
                  </time>
                 </a>
                </div>
                <!-- .comment-metadata -->
               </footer>
               <!-- .comment-meta -->
               <div class="comment-content">
                <p>
                 这是为了让我知道没必要的中英文混杂其实是很无聊的行为
                </p>
               </div>
               <!-- .comment-content -->
              </article>
              <!-- .comment-body -->
             </li>
             <!-- #comment-## -->
            </ol>
            <!-- .children -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-even depth-1 parent" id="comment-4623">
          <article class="comment-body" id="div-comment-4623">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/b7cd2769fda00e5d0bb3b2feea6cfd5b?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              R-Dragon
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4623">
              <time datetime="2013-08-09T17:29:43+00:00">
               2013/08/09 17:29
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             怎么不见操作Office的帖子？
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给R-Dragon" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4623#respond" onclick='return addComment.moveForm( "div-comment-4623", "4623", "respond", "8129" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-editor bypostauthor even depth-2" id="comment-4625">
            <article class="comment-body" id="div-comment-4625">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/2fe058e9e383c85afa949b36e869432f?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                COS编辑部
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4625">
                <time datetime="2013-08-09T19:22:13+00:00">
                 2013/08/09 19:22
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               论坛帖子只是文章素材来源的一部分~
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给COS编辑部" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4625#respond" onclick='return addComment.moveForm( "div-comment-4625", "4625", "respond", "8129" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment odd alt thread-odd thread-alt depth-1 parent" id="comment-4628">
          <article class="comment-body" id="div-comment-4628">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/0c0f849410dda1f6ac69c9316215af89?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              代冕
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4628">
              <time datetime="2013-08-10T09:13:20+00:00">
               2013/08/10 09:13
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             真不错，学习了！
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给代冕" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4628#respond" onclick='return addComment.moveForm( "div-comment-4628", "4628", "respond", "8129" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-editor bypostauthor even depth-2" id="comment-4630">
            <article class="comment-body" id="div-comment-4630">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/2fe058e9e383c85afa949b36e869432f?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                COS编辑部
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4630">
                <time datetime="2013-08-10T09:16:03+00:00">
                 2013/08/10 09:16
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               谢谢！
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给COS编辑部" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4630#respond" onclick='return addComment.moveForm( "div-comment-4630", "4630", "respond", "8129" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="pingback odd alt thread-even depth-1" id="comment-4631">
          <div class="comment-body">
           Pingback：
           <a class="url" href="http://cos.name/2013/08/cos-series-use-r-for-fun-application/" rel="external nofollow">
            COS论坛精华帖系列——use R for fun系列之小应用制作篇 | 统计之都
           </a>
          </div>
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-odd thread-alt depth-1 parent" id="comment-4681">
          <article class="comment-body" id="div-comment-4681">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/43cf6cf61ac575e9e45e799dd8da7c33?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://weibo.com/u/1801208997?wvr=5&amp;wvr=5&amp;lf=reg" rel="external nofollow">
               何敏
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4681">
              <time datetime="2013-08-22T17:53:11+00:00">
               2013/08/22 17:53
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             生活的乐趣呀
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给何敏" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4681#respond" onclick='return addComment.moveForm( "div-comment-4681", "4681", "respond", "8129" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment byuser comment-author-editor bypostauthor odd alt depth-2" id="comment-4684">
            <article class="comment-body" id="div-comment-4684">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/2fe058e9e383c85afa949b36e869432f?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                COS编辑部
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4684">
                <time datetime="2013-08-22T20:49:52+00:00">
                 2013/08/22 20:49
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               哈哈 是啊
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给COS编辑部" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4684#respond" onclick='return addComment.moveForm( "div-comment-4684", "4684", "respond", "8129" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
         <li class="comment even thread-even depth-1 parent" id="comment-4736">
          <article class="comment-body" id="div-comment-4736">
           <footer class="comment-meta">
            <div class="comment-author vcard">
             <img src="http://sdn.geekzu.org/avatar/fd6964ed425d626628bd057abbe6a85b?s=74&amp;d=monsterid&amp;r=g"/>
             <b class="fn">
              <a class="url" href="http://yihui.name" rel="external nofollow">
               谢益辉
              </a>
             </b>
             <span class="says">
              说道：
             </span>
            </div>
            <!-- .comment-author -->
            <div class="comment-metadata">
             <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4736">
              <time datetime="2013-08-29T08:44:35+00:00">
               2013/08/29 08:44
              </time>
             </a>
            </div>
            <!-- .comment-metadata -->
           </footer>
           <!-- .comment-meta -->
           <div class="comment-content">
            <p>
             对付不必要的中英混杂，我就只有以毒攻毒这一招了。
            </p>
           </div>
           <!-- .comment-content -->
           <div class="reply">
            <a aria-label="回复给谢益辉" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4736#respond" onclick='return addComment.moveForm( "div-comment-4736", "4736", "respond", "8129" )' rel="nofollow">
             回复
            </a>
           </div>
          </article>
          <!-- .comment-body -->
          <ol class="children">
           <li class="comment odd alt depth-2" id="comment-4737">
            <article class="comment-body" id="div-comment-4737">
             <footer class="comment-meta">
              <div class="comment-author vcard">
               <img src="http://sdn.geekzu.org/avatar/?s=74&amp;d=monsterid&amp;r=g"/>
               <b class="fn">
                <a class="url" href="http://weibo.com/whatyousay2046" rel="external nofollow">
                 1-0-1-0-1-0-1-0-1-0-0-0-0-1-10
                </a>
               </b>
               <span class="says">
                说道：
               </span>
              </div>
              <!-- .comment-author -->
              <div class="comment-metadata">
               <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#comment-4737">
                <time datetime="2013-08-29T10:36:32+00:00">
                 2013/08/29 10:36
                </time>
               </a>
              </div>
              <!-- .comment-metadata -->
             </footer>
             <!-- .comment-meta -->
             <div class="comment-content">
              <p>
               以德服人，以德服人
              </p>
             </div>
             <!-- .comment-content -->
             <div class="reply">
              <a aria-label="回复给1-0-1-0-1-0-1-0-1-0-0-0-0-1-10" class="comment-reply-link" href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/?replytocom=4737#respond" onclick='return addComment.moveForm( "div-comment-4737", "4737", "respond", "8129" )' rel="nofollow">
               回复
              </a>
             </div>
            </article>
            <!-- .comment-body -->
           </li>
           <!-- #comment-## -->
          </ol>
          <!-- .children -->
         </li>
         <!-- #comment-## -->
        </ol>
        <!-- .comment-list -->
        <div class="comment-respond" id="respond">
         <h3 class="comment-reply-title" id="reply-title">
          发表评论
          <small>
           <a href="http://cos.name/2013/08/cos-series-use-r-for-fun-game/#respond" id="cancel-comment-reply-link" rel="nofollow" style="display:none;">
            取消回复
           </a>
          </small>
         </h3>
         <form action="http://cos.name/wp-comments-post.php" class="comment-form" id="commentform" method="post" novalidate="">
          <p class="comment-notes">
           <span id="email-notes">
            电子邮件地址不会被公开。
           </span>
           必填项已用
           <span class="required">
            *
           </span>
           标注
          </p>
          <p class="comment-form-comment">
           <label for="comment">
            评论
           </label>
           <textarea aria-required="true" cols="45" id="comment" maxlength="65525" name="comment" required="required" rows="8">
           </textarea>
          </p>
          <p class="comment-form-author">
           <label for="author">
            姓名
            <span class="required">
             *
            </span>
           </label>
          </p>
          <p class="comment-form-email">
           <label for="email">
            电子邮件
            <span class="required">
             *
            </span>
           </label>
          </p>
          <p class="comment-form-url">
           <label for="url">
            站点
           </label>
          </p>
          <p class="form-submit">
          </p>
          <p style="display: none;">
          </p>
          <p style="display: none;">
          </p>
         </form>
        </div>
        <!-- #respond -->
       </div>
       <!-- #comments -->
      </div>
      <!-- #content -->
     </div>
     <!-- #primary -->
     <div class="sidebar-container" id="tertiary" role="complementary">
      <div class="sidebar-inner">
       <div class="widget-area">
        <aside class="widget widget_text" id="text-3">
         <h3 class="widget-title">
          关注统计之都
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            新浪微博
            <a href="http://weibo.com/cosname">
             @统计之都
            </a>
           </li>
           <li>
            人人网
            <a href="http://renren.com/cosname">
             @统计之都
            </a>
           </li>
           <li>
            Twitter
            <a href="http://twitter.com/cos_name">
             @cos_name
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-6">
         <h3 class="widget-title">
          微信公众平台
         </h3>
         <div class="textwidget">
          <img src="http://cos.name/wp-content/uploads/2013/04/qrcode-8cm.jpg"/>
          <p style="font-size:12px;margin-left:15px">
           微信号 CapStat
          </p>
          <p>
           我们将第一时间向您推送主站和论坛的精彩内容，以及统计之都的线下活动、竞赛、培训和会议信息。
          </p>
         </div>
        </aside>
        <aside class="widget widget_text" id="text-8">
         <h3 class="widget-title">
          站内导航
         </h3>
         <div class="textwidget">
          <ul>
           <li class="page_item">
            <a href="http://cos.name/cn/">
             中文论坛
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/videos/">
             视频
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/salon/">
             统计沙龙
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/books/">
             图书出版
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/training/">
             教育培训
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/about/">
             关于我们
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/donate/">
             捐赠
            </a>
           </li>
           <li class="page_item">
            <a href="http://cos.name/chinar/">
             R语言会议
            </a>
           </li>
          </ul>
         </div>
        </aside>
        <aside class="widget widget_links" id="linkcat-2">
         <h3 class="widget-title">
          友情链接
         </h3>
         <ul class="xoxo blogroll">
          <li>
           <a href="http://stat.ruc.edu.cn" target="_blank" title="中国人民大学统计学院网站">
            中国人民大学统计学院
           </a>
          </li>
          <li>
           <a href="http://rucdmc.net">
            中国人民大学数据挖掘中心
           </a>
          </li>
          <li>
           <a href="http://birc.gsm.pku.edu.cn/" target="_blank">
            北京大学商务智能研究中心
           </a>
          </li>
          <li>
           <a href="http://sam.cufe.edu.cn/" target="_blank" title="中央财经大学统计与数学学院网站">
            中央财经大学统计与数学学院
           </a>
          </li>
          <li>
           <a href="http://tjx.cueb.edu.cn/" target="_blank" title="首都经济贸易大学统计学院网站">
            首经贸统计学院
           </a>
          </li>
          <li>
           <a href="http://www.shookr.com/">
            数客网大数据社区
           </a>
          </li>
          <li>
           <a href="http://www.xueqing.tv/" target="_blank" title="数据科学在线学习平台">
            雪晴数据网
           </a>
          </li>
          <li>
           <a href="http://iera.name/" target="_blank" title="IERA是一个旨在普及、传播和增进工业工程知识的非营利性网站">
            IERA（直通IE）
           </a>
          </li>
         </ul>
        </aside>
        <aside class="widget widget_categories" id="categories-2">
         <h3 class="widget-title">
          全部分类
         </h3>
         <label class="screen-reader-text" for="cat">
          全部分类
         </label>
         <select class="postform" id="cat" name="cat">
          <option value="-1">
           选择分类目录
          </option>
          <option class="level-0" value="925">
           cos访谈  (4)
          </option>
          <option class="level-0" value="659">
           图书出版  (5)
          </option>
          <option class="level-0" value="379">
           数学方法  (14)
          </option>
          <option class="level-1" value="381">
           分析与代数  (1)
          </option>
          <option class="level-1" value="380">
           概率论  (9)
          </option>
          <option class="level-1" value="382">
           随机过程  (5)
          </option>
          <option class="level-0" value="210">
           数据分析  (81)
          </option>
          <option class="level-1" value="203">
           多元统计  (3)
          </option>
          <option class="level-1" value="42">
           数据挖掘与机器学习  (42)
          </option>
          <option class="level-1" value="36">
           生物与医学统计  (17)
          </option>
          <option class="level-1" value="35">
           计量经济学  (4)
          </option>
          <option class="level-1" value="296">
           金融统计  (3)
          </option>
          <option class="level-1" value="303">
           风险精算  (7)
          </option>
          <option class="level-0" value="177">
           模型专题  (15)
          </option>
          <option class="level-1" value="38">
           回归分析  (10)
          </option>
          <option class="level-1" value="41">
           时间序列  (2)
          </option>
          <option class="level-0" value="784">
           每周精选  (24)
          </option>
          <option class="level-1" value="183">
           可视化  (9)
          </option>
          <option class="level-0" value="967">
           沙龙纪要  (3)
          </option>
          <option class="level-0" value="18">
           经典理论  (46)
          </option>
          <option class="level-1" value="37">
           抽样调查  (3)
          </option>
          <option class="level-1" value="4">
           统计推断  (26)
          </option>
          <option class="level-1" value="236">
           试验设计  (7)
          </option>
          <option class="level-1" value="39">
           非参数统计  (3)
          </option>
          <option class="level-0" value="1">
           统计之都  (279)
          </option>
          <option class="level-1" value="884">
           中国R会议  (2)
          </option>
          <option class="level-1" value="885">
           中国R语言会议  (5)
          </option>
          <option class="level-1" value="446">
           出国留学  (3)
          </option>
          <option class="level-1" value="179">
           推荐文章  (90)
          </option>
          <option class="level-1" value="3">
           新闻通知  (75)
          </option>
          <option class="level-1" value="263">
           统计刊物  (10)
          </option>
          <option class="level-1" value="174">
           网站导读  (40)
          </option>
          <option class="level-1" value="204">
           职业事业  (51)
          </option>
          <option class="level-1" value="213">
           高校课堂  (9)
          </option>
          <option class="level-0" value="178">
           统计计算  (28)
          </option>
          <option class="level-1" value="40">
           优化与模拟  (15)
          </option>
          <option class="level-1" value="43">
           贝叶斯方法  (6)
          </option>
          <option class="level-0" value="378">
           软件应用  (116)
          </option>
          <option class="level-1" value="44">
           统计图形  (36)
          </option>
          <option class="level-1" value="110">
           统计软件  (83)
          </option>
         </select>
        </aside>
        <aside class="widget widget_recent_comments" id="recent-comments-2">
         <h3 class="widget-title">
          最新评论
         </h3>
         <ul id="recentcomments">
          <li class="recentcomments">
           <span class="comment-author-link">
            fineboom
           </span>
           发表在《
           <a href="http://cos.name/2016/06/use-shiny-fleetly-set-up-visual-prototype-system/#comment-7317">
            利用shiny包快速搭建可视化原型系统
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            胡家新
           </span>
           发表在《
           <a href="http://cos.name/2016/06/r%e8%af%ad%e5%8d%83%e5%af%bb%e7%ac%ac%e4%b8%89%e6%9c%9f%ef%bc%9a%e5%bc%a0%e6%97%a0%e5%bf%8c%e7%a9%b6%e7%ab%9f%e7%88%b1%e8%b0%81%ef%bc%9f/#comment-7316">
            R语千寻第三期：张无忌究竟爱谁？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            <a class="url" href="http://www.zijiacha.com/category.php?id=6" rel="external nofollow">
             南糯山普洱茶
            </a>
           </span>
           发表在《
           <a href="http://cos.name/2016/06/r%e8%af%ad%e5%8d%83%e5%af%bb%e7%ac%ac%e4%b8%89%e6%9c%9f%ef%bc%9a%e5%bc%a0%e6%97%a0%e5%bf%8c%e7%a9%b6%e7%ab%9f%e7%88%b1%e8%b0%81%ef%bc%9f/#comment-7315">
            R语千寻第三期：张无忌究竟爱谁？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            J
           </span>
           发表在《
           <a href="http://cos.name/2016/05/value-of-the-reputation-from-the-data/#comment-7314">
            数据告诉你：高信誉的卖家应该收高价，还是收低价？
           </a>
           》
          </li>
          <li class="recentcomments">
           <span class="comment-author-link">
            <a class="url" href="http://gg" rel="external nofollow">
             Hilda
            </a>
           </span>
           发表在《
           <a href="http://cos.name/2013/01/drawing-map-in-r-era/#comment-7311">
            R时代，你要怎样画地图？
           </a>
           》
          </li>
         </ul>
        </aside>
        <aside class="widget widget_rss" id="rss-282869971">
         <h3 class="widget-title">
          <a class="rsswidget" href="http://cos.name/cn/topics/feed/">
           <img src="http://cos.name/wp-includes/images/rss.png"/>
          </a>
          <a class="rsswidget" href="http://cos.name/cn/topics/feed/">
           中文论坛新帖
          </a>
         </h3>
         <ul>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/417372/">
            处理时间数据和产生时间序列的问题
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/6790/">
            《统计陷阱》下载 （How to lie with statistics）
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/818/">
            统计学的世界（第五版）
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/16574/">
            class(x) 返回值值是AsIs,AsIs代表什么，有什么用处？
           </a>
          </li>
          <li>
           <a class="rsswidget" href="http://cos.name/cn/topic/417366/">
            如何用R绘制一个分类算法的决策规则
           </a>
          </li>
         </ul>
        </aside>
        <aside class="widget widget_text" id="text-2">
         <h3 class="widget-title">
          登录/RSS
         </h3>
         <div class="textwidget">
          <ul>
           <li>
            <a href="http://cos.name/wp-admin/">
             登录
            </a>
           </li>
           <li>
            <a href="http://cos.name/feed/" title="使用 RSS 2.0 同步站点内容">
             文章
             <abbr title="Really Simple Syndication">
              RSS
             </abbr>
            </a>
           </li>
           <li>
            <a href="http://cos.name/comments/feed/" title="RSS 上的最近评论">
             评论
             <abbr title="Really Simple Syndication">
              RSS
             </abbr>
            </a>
           </li>
          </ul>
         </div>
        </aside>
       </div>
       <!-- .widget-area -->
      </div>
      <!-- .sidebar-inner -->
     </div>
     <!-- #tertiary -->
    </div>
    <!-- #main -->
    <footer class="site-footer" id="colophon" role="contentinfo">
     <div class="site-info">
      版权所有 © 2014 统计之都 | 由
      <a href="http://wordpress.org/">
       WordPress
      </a>
      构建 | 主题修改自
      <a href="http://wordpress.org/themes/twentythirteen">
       Twenty Thirteen
      </a>
     </div>
     <!-- .site-info -->
    </footer>
    <!-- #colophon -->
   </div>
   <!-- #page -->
   <p style="margin:0;padding:0;height:1px;overflow:hidden;">
    <a href="http://www.wumii.com/widget/relatedItems" style="border:0;">
     <img src="http://static.wumii.cn/images/pixel.png"/>
    </a>
   </p>
  </div>
 </body>
</html>